package com.globalwave.common.scheduling;

import java.util.Hashtable;
import java.util.Map;

import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.Trigger;

/**
 * 1.支持集群，控制某一台机或者多台机运行（机器名/IP？）
 *    1）只需要一台机执行即可，如：数据同步
 *    2）多台机器可运行，如：定时刷新数据
 *    
 * 2.停止任务
 *    1）不再触发下一次任务
 *    2）尽可能保证业务完成后停止
 *    3）前一任务未停止，后一任务不能开始
 *    
 * 3.挂起/恢复 -- 暂时停止觖发
 * 
 * 4.日志
 * 
 *    
 * @author CN084703
 *
 */
public class TaskManager {

	private static Map<String, Trigger> triggers = new Hashtable<String, Trigger>();
	
	public static TaskScheduler taskScheduler ;
	
	public Trigger getTrigger(String code) {
		return triggers.get(code) ;
	}
	
	public void addTrigger(CronTrigger trigger) {
		triggers.put(trigger.getCode(), trigger) ;
	}
	
	public void addTrigger(String code, Trigger trigger) {
		triggers.put(code, trigger) ;
	}

	
	public void cancel(String code) {
		((CronTrigger)triggers.get(code)).setCanceled(true) ;
	}
	
	public void cancelAll() {
		for(Trigger t:triggers.values()) {
			((CronTrigger)t).setCanceled(true) ;
		}
	}
}
